Der erste Schritt in jedem Penetrationstest ist die Reconnaissance (Aufklärung), bei der wir versuchen, so viele Informationen wie möglich über das Zielsystem zu sammeln. Wir beginnen damit, aktive Hosts in unserem lokalen Netzwerksegment zu identifizieren.
192.168.2.122 08:00:27:2c:85:3f PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` sendet ARP-Anfragen (Address Resolution Protocol) an alle möglichen IP-Adressen im lokalen Netzwerksegment (`-l` steht für localnet). ARP ist ein Protokoll, das IP-Adressen zu MAC-Adressen (Hardware-Adressen) auf Layer 2 des OSI-Modells auflöst. Antwortet ein Gerät, wird seine IP- und MAC-Adresse angezeigt. Hier hat das Gerät mit der IP-Adresse `192.168.2.122` geantwortet.
Bewertung: Dieser Schritt war erfolgreich. Wir haben einen aktiven Host im Netzwerk identifiziert (`192.168.2.122`). Die MAC-Adresse `08:00:27:2c:85:3f` und der zugehörige Hersteller (`PCS Systemtechnik GmbH`, oft ein Indikator für Oracle VirtualBox) geben erste Hinweise auf die Art des Systems (wahrscheinlich eine virtuelle Maschine). Dies ist unser Ziel für die weiteren Schritte.
Empfehlung (Pentester): Notieren Sie die gefundene IP-Adresse als primäres Ziel. Die MAC-Adresse kann für spätere OS-Fingerprinting-Versuche nützlich sein.
Empfehlung (Admin): ARP-Scans sind im lokalen Netzwerk schwer zu verhindern. Segmentierung des Netzwerks und Monitoring auf ungewöhnliche ARP-Aktivitäten können helfen, solche Scans zu erkennen.
Nachdem wir die IP-Adresse des Ziels kennen, führen wir einen umfassenden Port-Scan durch, um offene Ports und darauf laufende Dienste zu identifizieren.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-03 00:40 CEST Nmap scan report for funbox8 (192.168.2.122) Host is up (0.00014s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 | ftp-syst: | STAT: | FTP server status: | Connected to ::ffff:192.168.2.130 | Logged in as ftp | TYPE: ASCII | No session bandwidth limit | Session timeout in seconds is 300 | Control connection is plain text | Data connections will be plain text | At session startup, client count was 2 | vsFTPd 3.0.3 - secure, fast, stable |_End of status | ftp-anon: Anonymous FTP login allowed (FTP code 230) | -rw-r--r-- 1 0 0 633 May 22 2021 supers3cr3t |_drwxr-xr-x 6 1006 1006 4096 May 22 2021 wordpress 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 1d3dbf5ae19fbb3185349424cf0c0420 (RSA) | 256 3be15c975a931d9cd502e5d815a792ea (ECDSA) |_ 256 d6f2e3da7ed73f947e3b5dbcefee4963 (ED25519) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) |_http-title: Site doesn't have a title (text/html). |_http-server-header: Apache/2.4.41 (Ubuntu) MAC Address: 08:00:27:2C:85:3F (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.14 ms funbox8 (192.168.2.122)
Analyse: Dieser `nmap`-Befehl führt mehrere Aktionen durch:
-sS
: Führt einen TCP SYN Scan (Stealth Scan) durch. Dieser ist oft weniger auffällig als ein voller TCP Connect Scan.-sC
: Führt die Standard-Nmap-Skripte (NSE - Nmap Scripting Engine) aus, um zusätzliche Informationen über die Dienste zu sammeln.-T5
: Setzt das Timing-Template auf "insane" (sehr schnell). Dies kann auf manchen Netzwerken unzuverlässig sein oder entdeckt werden, ist aber in Testumgebungen oft akzeptabel.-AO
: Versucht, das Betriebssystem (OS) zu erkennen.192.168.2.122
: Die Ziel-IP-Adresse.-p-
: Scannt alle 65535 TCP-Ports.Bewertung: Der Scan war sehr erfolgreich und liefert zentrale Informationen:
Empfehlung (Pentester): Priorisieren Sie den anonymen FTP-Zugang, da er sofortigen Zugriff ermöglicht. Untersuchen Sie die Webanwendung auf Port 80 gründlich. Behalten Sie SSH als Ziel für Brute-Force-Angriffe oder gefundene Zugangsdaten im Auge. Notieren Sie die Softwareversionen (vsftpd, OpenSSH, Apache) für die Schwachstellensuche.
Empfehlung (Admin): Deaktivieren Sie anonymen FTP-Zugang, wenn er nicht zwingend erforderlich ist. Halten Sie alle Dienste (FTP, SSH, Apache) auf dem neuesten Stand, um bekannte Schwachstellen zu vermeiden. Konfigurieren Sie eine Firewall, um nur notwendige Ports freizugeben.
Um die offenen Ports übersichtlicher darzustellen, filtern wir die Nmap-Ausgabe.
21/tcp open ftp vsftpd 3.0.3 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
Analyse: Dieser Befehl wiederholt den vorherigen Nmap-Scan, leitet die Ausgabe (`|`) aber an das Werkzeug `grep` weiter. `grep open` filtert die Ausgabe und zeigt nur die Zeilen an, die das Wort "open" enthalten. Dies extrahiert effektiv die Liste der offenen Ports und ihrer Dienste.
Bewertung: Dies ist keine neue Informationsgewinnung, sondern eine reine Formatierungshilfe. Es bestätigt die drei offenen Ports (21, 22, 80) auf übersichtliche Weise. Nützlich für schnelle Referenz oder automatisierte Skripte.
Empfehlung (Pentester): Die Verwendung von `grep` und anderen Textverarbeitungstools ist eine grundlegende Fähigkeit, um große Ausgaben zu filtern und relevante Informationen schnell zu extrahieren.
Empfehlung (Admin): Keine spezifische Empfehlung bezüglich dieses Befehls, da er nur die Ausgabe filtert.
Wir konzentrieren uns nun auf den Webserver (Port 80) und führen einen Scan mit Nikto durch, einem spezialisierten Webserver-Scanner, um nach bekannten Schwachstellen, Konfigurationsfehlern und interessanten Dateien zu suchen.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.122 + Target Hostname: 192.168.2.122 + Target Port: 80 + Start Time: 2023-05-03 00:40:58 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.41 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. + No CGI Directories found (use '-C all' to force check all possible dirs) + /robots.txt: contains 2 entries which should be manually viewed. See: https://developer.mozilla.org/en-US/docs/Glossary/Robots.txt + Apache/2.4.41 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + /: Server may leak inodes via ETags, header found with file /, inode: 17b, size: 5c2ebfb16a6a1, mtime: gzip. + OPTIONS: Allowed HTTP Methods: POST, OPTIONS, HEAD, GET . + 8104 requests: 0 error(s) and 6 item(s) reported on remote host + End Time: 2023-05-03 00:41:17 (GMT2) (19 seconds)
Analyse: `nikto -h 192.168.2.122` startet einen Scan gegen den Webserver auf der angegebenen IP-Adresse (standardmäßig auf Port 80). Nikto prüft über 6700 potenziell gefährliche Dateien/CGIs, veraltete Softwareversionen und spezifische Konfigurationsprobleme.
Bewertung: Nikto liefert mehrere interessante Ergebnisse:
Empfehlung (Pentester): Überprüfen Sie den Inhalt der `/robots.txt`-Datei manuell. Recherchieren Sie nach bekannten Schwachstellen für Apache 2.4.41. Beachten Sie die fehlenden Security Header als potenziellen Befund für den Bericht.
Empfehlung (Admin): Aktualisieren Sie den Apache-Webserver auf die neueste stabile Version. Implementieren Sie die empfohlenen Security Header (`X-Frame-Options`, `X-Content-Type-Options`, etc.) in der Serverkonfiguration. Überprüfen Sie die Konfiguration bezüglich ETag-Leaks. Überprüfen und bereinigen Sie die `robots.txt`, um keine sensiblen Pfade preiszugeben.
In dieser Phase konzentrieren wir uns auf die tiefergehende Untersuchung der Webanwendung und des FTP-Servers, basierend auf den Erkenntnissen aus der Reconnaissance.
Wir beginnen mit dem vielversprechendsten Fund: dem anonymen FTP-Zugang.
Connected to 192.168.2.122. 220 (vsFTPd 3.0.3) Name (192.168.2.122:cyber): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.
Analyse: Der Befehl `ftp 192.168.2.122` initiiert eine Verbindung zum FTP-Server auf der Ziel-IP. Auf die Aufforderung `Name` geben wir `anonymous` ein. Da der Server anonymen Zugang erlaubt (Code `331`), wird nach einem Passwort gefragt, aber wir können einfach Enter drücken (kein Passwort benötigt). Der Code `230 Login successful.` bestätigt den erfolgreichen anonymen Login.
Bewertung: Sehr erfolgreich. Wir haben unauthentifizierten Zugriff auf das FTP-Verzeichnis erlangt. Dies ist oft ein kritischer Fund, da hier sensible Informationen oder Konfigurationsdateien liegen könnten.
Empfehlung (Pentester): Untersuchen Sie nun gründlich das Dateisystem, das über FTP zugänglich ist. Suchen Sie nach Dateien, Verzeichnissen, Konfigurationsdateien, Backups oder Hinweisen auf andere Benutzer oder Systeme.
Empfehlung (Admin): Wie bereits erwähnt, deaktivieren Sie anonymen FTP-Zugriff, falls er nicht betriebsnotwendig ist. Wenn er benötigt wird, stellen Sie sicher, dass nur absolut notwendige Dateien und Verzeichnisse mit den geringstmöglichen Berechtigungen zugänglich sind.
Wir listen den Inhalt des aktuellen FTP-Verzeichnisses auf.
229 Entering Extended Passive Mode (|||45966|) 150 Here comes the directory listing. drwxr-xr-x 3 0 118 4096 May 22 2021 . drwxr-xr-x 3 0 118 4096 May 22 2021 .. -rw-r--r-- 1 0 0 233 May 22 2021 .s3cr3t -rw-r--r-- 1 0 0 633 May 22 2021 supers3cr3t drwxr-xr-x 6 1006 1006 4096 May 22 2021 wordpress
Analyse: Der FTP-Befehl `ls -la` listet alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf, einschließlich versteckter Dateien (die mit einem Punkt beginnen) und detaillierter Informationen (Berechtigungen, Besitzer, Größe, Datum). Wir sehen die bereits von Nmap gemeldeten Einträge `supers3cr3t` und `wordpress`, sowie eine versteckte Datei namens `.s3cr3t`.
Bewertung: Die Auflistung bestätigt die Nmap-Ergebnisse und enthüllt zusätzlich die versteckte Datei `.s3cr3t`. Alle drei Einträge (`.s3cr3t`, `supers3cr3t`, `wordpress`) sind potenzielle Quellen für weitere Informationen.
Empfehlung (Pentester): Laden Sie alle gefundenen Dateien (`.s3cr3t`, `supers3cr3t`) herunter und untersuchen Sie deren Inhalt. Untersuchen Sie auch das `wordpress`-Verzeichnis genauer.
Empfehlung (Admin): Stellen Sie sicher, dass keine sensiblen oder unnötigen Dateien in öffentlich zugänglichen FTP-Verzeichnissen (auch anonymen) abgelegt werden. Überprüfen Sie regelmäßig die Inhalte.
Wir versuchen, eine Datei hochzuladen, um zu prüfen, ob wir Schreibrechte haben.
local: rev.php remote: rev.php 229 Entering Extended Passive Mode (|||42366|) 550 Permission denied.
Analyse: Der Befehl `put rev.php` versucht, eine lokale Datei namens `rev.php` (vermutlich eine Reverse Shell) auf den FTP-Server hochzuladen.
Bewertung: Der Versuch schlägt fehl (`550 Permission denied`). Der anonyme Benutzer hat keine Schreibrechte in diesem Verzeichnis. Das ist eine gute Sicherheitspraxis seitens des Administrators, schränkt aber unsere Möglichkeiten hier ein.
Empfehlung (Pentester): Notieren Sie, dass kein Schreibzugriff besteht. Konzentrieren Sie sich auf das Herunterladen und Analysieren vorhandener Dateien.
Empfehlung (Admin): Stellen Sie sicher, dass anonyme Benutzer (und generell Benutzer mit geringen Rechten) niemals Schreibzugriff auf Verzeichnisse erhalten, es sei denn, es ist absolut notwendig und sorgfältig abgesichert.
Wir versuchen, in übergeordnete Verzeichnisse zu wechseln.
550 Failed to change directory.
Analyse: Der Befehl `cd ..\..` versucht, zwei Ebenen im Verzeichnisbaum nach oben zu wechseln.
Bewertung: Der Versuch schlägt fehl (`550 Failed to change directory`). Dies deutet darauf hin, dass der FTP-Server wahrscheinlich in einer "chroot"-Umgebung läuft, die den Benutzer auf sein zugewiesenes Home-Verzeichnis beschränkt. Dies ist eine weitere gute Sicherheitspraxis.
Empfehlung (Pentester): Wir sind auf das aktuell sichtbare Verzeichnis und seine Unterverzeichnisse beschränkt.
Empfehlung (Admin): Verwenden Sie immer `chroot` für FTP-Benutzer (insbesondere anonyme), um zu verhindern, dass sie auf das restliche Dateisystem des Servers zugreifen können.
Um alle Dateien und Verzeichnisse bequem herunterzuladen, verwenden wir `wget` mit rekursivem Download über FTP.
192.168.2.122/wordpress/wp-in 100%[===============================================>] 5,78K --.-KB/s in 0s 2023-05-03 00:45:25 (29,8 MB/s) - »192.168.2.122/wordpress/wp-includes/widgets/class-wp-widget-recent-posts.php« gespeichert [5914] --2023-05-03 00:45:25-- ftp://anonymous:*password*@192.168.2.122/wordpress/wp-includes/widgets/class-wp-widget-rss.php => »192.168.2.122/wordpress/wp-includes/widgets/class-wp-widget-rss.php« .... ... .. gespeichert [21258]
Analyse: Der Befehl `wget -r ftp://anonymous:anonymous@192.168.2.122:21` verwendet das Tool `wget`, um rekursiv (`-r`) alle Dateien und Verzeichnisse vom FTP-Server herunterzuladen. Er meldet sich dabei als Benutzer `anonymous` mit einem beliebigen Passwort (hier auch `anonymous`) an der angegebenen Adresse und Port (`192.168.2.122:21`) an. Die Ausgabe zeigt den Fortschritt des Downloads an (hier gekürzt).
Bewertung: Dies ist eine effiziente Methode, um den gesamten Inhalt des anonymen FTP-Bereichs lokal zur weiteren Analyse zu spiegeln. Wir haben nun Kopien von `.s3cr3t`, `supers3cr3t` und dem gesamten `wordpress`-Verzeichnis.
Empfehlung (Pentester): Analysieren Sie die heruntergeladenen Dateien lokal. Beginnen Sie mit den verdächtig benannten Dateien `.s3cr3t` und `supers3cr3t`. Untersuchen Sie das `wordpress`-Verzeichnis auf Konfigurationsdateien (insbesondere `wp-config.php`).
Empfehlung (Admin): Große oder rekursive Downloads können auf die Aktivität eines potenziellen Angreifers hindeuten. Monitoring von Bandbreitennutzung und Anzahl der FTP-Verbindungen kann hilfreich sein.
Wir überprüfen die heruntergeladenen Dateien in unserem lokalen Verzeichnis.
insgesamt 8 -rw-r--r-- 1 root root 633 22. Mai 2021 supers3cr3t drwxr-xr-x 6 root root 4096 3. Mai 00:45 wordpress
Analyse: `ll` ist ein häufiger Alias für `ls -l` (oder `ls -alF`). Es listet den Inhalt des aktuellen lokalen Verzeichnisses (`~/192.168.2.122`) auf. Wir sehen die heruntergeladene Datei `supers3cr3t` und das Verzeichnis `wordpress`. Die Datei `.s3cr3t` ist hier nicht sichtbar, da `ll` ohne `-a` (show all) versteckte Dateien nicht anzeigt (oder sie wurde nicht korrekt heruntergeladen/war leer).
Bewertung: Bestätigt den erfolgreichen Download der Hauptkomponenten. Der Fokus liegt nun auf der Analyse dieser Dateien.
Empfehlung (Pentester): Verwenden Sie `ls -la`, um sicherzustellen, dass auch versteckte Dateien angezeigt werden. Untersuchen Sie als Nächstes den Inhalt von `supers3cr3t`.
Empfehlung (Admin): Keine spezifische Empfehlung.
Wir schauen uns den Inhalt der Datei `supers3cr3t` an.
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++++++.>+++++++++++..----. <<++.>>-------.+..+++++++++++.<<.>>-------.+++++.++++++.-----.<<.>>-.-- -----------.+++++++++++++++++++.+.---.-------------.<<.>>----.++++++++++ +++.----------.<<.>>++++++++++++++++.------------.---.+++++++++.<<.>>++ +++++++++.----------.++++++.<<.>>++.--------------.+++..<<.>>+++++++++. -------.----------.+.+++++++++++++.+.+.-------------------.+++++++++++++. ----------.<<.>>+.+++++++++++++++++.-----------------.+++++++++++++.++++ +++.-----.------------.+.+++++.-------.<<.>>-----.+++.+++++++++++++++..-- -------------.+++++++++++++.<<++++++++++++++.------------. Look deep into nature and then you will understand everything better."
Analyse: Der Befehl `cat supers3cr3t` gibt den Inhalt der Datei auf der Konsole aus. Der obere Teil besteht aus einer Reihe von Sonderzeichen (`+`, `-`, `>`, `<`, `[`, `]`, `.`). Dies ist charakteristisch für die esoterische Programmiersprache "Brainfuck". Der untere Teil ist ein Zitat.
Bewertung: Die Datei enthält wahrscheinlich eine verschlüsselte oder kodierte Nachricht im Brainfuck-Format. Der Klartext darunter könnte ein Hinweis sein oder irrelevant. Brainfuck-Code muss mit einem Interpreter ausgeführt oder dekodiert werden, um seine Bedeutung zu enthüllen.
Empfehlung (Pentester): Kopieren Sie den Brainfuck-Code und verwenden Sie einen Online-Interpreter oder ein lokales Tool (z.B. `bf`), um ihn auszuführen oder zu dekodieren. Suchen Sie nach potenziellen Passwörtern, Benutzernamen oder anderen Hinweisen im dekodierten Output. Das Zitat könnte ignoriert werden, falls der dekodierte Code klare Informationen liefert.
Empfehlung (Admin): Vermeiden Sie es, sensible Informationen in obskuren Formaten in öffentlich zugänglichen Bereichen abzulegen. Security through obscurity ist keine zuverlässige Sicherheitsmaßnahme.
Wir untersuchen nun das heruntergeladene `wordpress`-Verzeichnis, insbesondere die Konfigurationsdatei `wp-config.php`, die oft Datenbank-Zugangsdaten enthält.
define( 'DB_USER', 'wpuser' );
*/
// ** MySQL-Einstellungen ** //
/** Diese Zugangsdaten bekommst du von deinem Webhoster. **/
/**
* Ersetze datenbankname_hier_einfuegen
* mit dem Namen der Datenbank, die du verwenden möchtest.
*/
define( 'DB_NAME', 'wpdb' );
/**
* Ersetze benutzername_hier_einfuegen
* mit deinem MySQL-Datenbank-Benutzernamen.
*/
define( 'DB_USER', 'wpuser' );
/**
* Ersetze passwort_hier_einfuegen mit deinem MySQL-Passwort.
*/
define( 'DB_PASSWORD', 'JuZhRbNNk.()' );
/**
* Ersetze localhost mit der MySQL-Serveradresse.
*/
define( 'DB_HOST', '10.10.10.12' );
Analyse: Wir wechseln in das heruntergeladene `wordpress`-Verzeichnis und verwenden `grep`, um die Datei `wp-config.php` nach Zeilen zu durchsuchen, die entweder "user" oder "pass" enthalten (`"user\|pass"` ist ein regulärer Ausdruck für "user ODER pass"). Die `wp-config.php` ist die Hauptkonfigurationsdatei für WordPress.
Bewertung: Volltreffer! Der Befehl extrahiert die relevanten Zeilen aus der Konfigurationsdatei. Wir finden den Datenbanknamen (`wpdb`), den Datenbankbenutzernamen (`wpuser`) und, am wichtigsten, das Datenbankpasswort (`JuZhRbNNk.()`). Wir finden auch den Datenbankhost (`10.10.10.12`), der sich von der Ziel-IP unterscheidet, was auf einen separaten Datenbankserver hindeuten könnte (ist aber in diesem Kontext wahrscheinlich nicht relevant).
Empfehlung (Pentester): Notieren Sie sich die gefundenen Zugangsdaten (`wpuser` / `JuZhRbNNk.()`). Diese sind primär für die WordPress-Datenbank gedacht, aber oft werden Passwörter wiederverwendet. Versuchen Sie, sich mit diesen Zugangsdaten bei anderen Diensten anzumelden, insbesondere SSH (Port 22).
Empfehlung (Admin): Speichern Sie niemals Klartext-Passwörter in Konfigurationsdateien, die potenziell zugänglich sein könnten (z.B. über FTP oder Webserver-Fehlkonfigurationen). Verwenden Sie Umgebungsvariablen oder sicherere Konfigurationsmanagement-Tools. Verwenden Sie unterschiedliche, starke Passwörter für verschiedene Dienste und Benutzerkonten.
Wir führen nun eine Verzeichnis-Brute-Force-Attacke gegen den Webserver durch, um versteckte Dateien oder Verzeichnisse zu finden, die nicht standardmäßig verlinkt sind.
=============================================================== Gobuster v3.5 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.122 [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 403,404 [+] User Agent: gobuster/3.5 [+] Extensions: rar,docx,raw,tar,pub,doc,jpg,rtf,kdbx,php,sql,db,asp,html,sh,py,dll,aspx,accdb,png,phtml,csv,pdf,ps1,xml,xlsx,txt,xls,bat,gz,jpeg,zip,mdb,exe,pl [+] Expanded: true [+] Timeout: 10s =============================================================== 2023/05/03 00:53:45 Starting gobuster in directory enumeration mode =============================================================== http://192.168.2.122/index.html (Status: 200) [Size: 379] http://192.168.2.122/image.jpg (Status: 200) [Size: 7053571] http://192.168.2.122/robots.txt (Status: 200) [Size: 46]
Analyse: `gobuster dir` ist ein Werkzeug zum Scannen von Webservern auf vorhandene Verzeichnisse und Dateien.
-u http://192.168.2.122
: Die Ziel-URL.-w /usr/share/seclists/.../directory-list-2.3-medium.txt
: (Implizit oder explizit, hier nicht vollständig sichtbar) Die Wortliste, die für die Namen der zu testenden Verzeichnisse/Dateien verwendet wird.-x txt,php,...
: Eine Liste von Dateierweiterungen, die an jeden Namen in der Wortliste angehängt werden, um nach spezifischen Dateitypen zu suchen.-t 10
: Anzahl der gleichzeitigen Anfragen (Threads).Bewertung: Der Scan fand drei bekannte Ressourcen:
Empfehlung (Pentester): Obwohl dieser Scan keine neuen Pfade aufdeckte, ist Directory Brute-Forcing ein wichtiger Schritt. Versuchen Sie es ggf. mit anderen Wortlisten oder spezialisierten Scannern. Untersuchen Sie die gefundene `/index.html` und `/image.jpg` genauer auf versteckte Informationen (z.B. Kommentare im HTML, Metadaten im Bild). Überprüfen Sie den Inhalt von `/robots.txt`.
Empfehlung (Admin): Minimieren Sie die Angriffsfläche, indem Sie unnötige Dateien und Verzeichnisse vom Webserver entfernen. Implementieren Sie Rate-Limiting oder Web Application Firewalls (WAFs), um Brute-Force-Scans zu erschweren oder zu blockieren.
Wir überprüfen den Inhalt der von Nikto und Gobuster gefundenen `robots.txt`.
DISALLOW: dirb, gobuster, etc. ALLOW: WYSIWYG
Analyse: `curl http://192.168.2.122/robots.txt` lädt den Inhalt der angegebenen URL herunter und zeigt ihn in der Konsole an. Die `robots.txt` enthält Anweisungen für Webcrawler.
Bewertung: Die Datei versucht, Tools wie `dirb` und `gobuster` von bestimmten Pfaden fernzuhalten (obwohl hier kein spezifischer Pfad angegeben ist, was die Direktive weniger wirksam macht). Sie erlaubt explizit den Zugriff auf einen Pfad namens `/WYSIWYG`. Das ist ein interessanter Fund, da WYSIWYG-Editoren (What You See Is What You Get) oft eigene Angriffsvektoren haben (z.B. File Uploads).
Empfehlung (Pentester): Untersuchen Sie das Verzeichnis `/WYSIWYG` auf dem Webserver. Suchen Sie nach bekannten Schwachstellen im Zusammenhang mit WYSIWYG-Editoren, die möglicherweise auf dem Server laufen.
Empfehlung (Admin): Die `robots.txt` ist kein Sicherheitsmechanismus. Verlassen Sie sich nicht darauf, um sensible Bereiche zu schützen. Wenn `/WYSIWYG` existiert, stellen Sie sicher, dass es ordnungsgemäß gesichert und aktualisiert ist.
Wir untersuchen den Quellcode der Startseite, um nach Kommentaren oder versteckten Informationen zu suchen.
img src="image.jpg" webdesign by j.miller [jane@funbox8.ctf]
Analyse: Dies repräsentiert die Analyse des HTML-Quellcodes der Webseite unter `http://192.168.2.122`. Im Quellcode wurde ein Kommentar oder Text gefunden, der einen Namen (`j.miller`) und eine E-Mail-Adresse (`jane@funbox8.ctf`) enthält. Die Domain `.ctf` deutet stark auf eine Capture-The-Flag-Umgebung hin.
Bewertung: Dies ist ein wertvoller Fund. Wir haben potenzielle Benutzernamen (`j.miller`, `jane`) und eine E-Mail-Adresse identifiziert. Benutzernamen sind oft der Schlüssel für Brute-Force-Angriffe oder das Erraten von Anmeldedaten.
Empfehlung (Pentester): Fügen Sie `j.miller` und `jane` zur Liste potenzieller Benutzernamen für Angriffe auf FTP und SSH hinzu. Die E-Mail-Adresse kann für weitere OSINT (Open Source Intelligence)-Recherchen genutzt werden, ist aber in einer CTF-Umgebung wahrscheinlich weniger relevant.
Empfehlung (Admin): Entfernen Sie sensible Informationen wie Namen oder E-Mail-Adressen von Entwicklern oder Mitarbeitern aus öffentlichen Quellcodes oder Kommentaren.
In dieser Phase versuchen wir, mithilfe der gesammelten Informationen (Benutzernamen, potenzielle Passwörter) einen ersten Zugriff auf das System zu erlangen, typischerweise über SSH oder FTP.
Wir versuchen nun, das Passwort für den Benutzer `jane` (aus dem HTML-Quellcode) auf dem FTP-Server mittels Brute-Force zu knacken.
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-05-03 01:14:34
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 15344575 login tries (l:1/p:15344575), ~239759 tries per task
[DATA] attacking ftp://lunch.vln:21/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[21][ftp] host: lunch.vln login: jane password: password
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Analyse: `hydra` ist ein beliebtes Tool für Brute-Force-Angriffe auf verschiedene Dienste.
-l jane
: Gibt den zu testenden Benutzernamen an.-P /usr/share/wordlists/rockyou.txt
: Gibt den Pfad zur Passwortliste an (`rockyou.txt` ist eine sehr gebräuchliche Liste mit häufigen Passwörtern).ftp://lunch.vln:21
: Gibt das Zielprotokoll (ftp), den Hostnamen (`lunch.vln` - wahrscheinlich der Hostname der Maschine 192.168.2.122) und den Port (21) an.-t 64
: Gibt die Anzahl der parallelen Tasks (Threads) an.Bewertung: Äußerst erfolgreich! Hydra fand ein gültiges Passwort für den Benutzer `jane`: `password`. Dies ist ein sehr schwaches Passwort und unterstreicht die Bedeutung starker, einzigartiger Passwörter.
Empfehlung (Pentester): Melden Sie sich sofort mit den gefundenen Zugangsdaten (`jane` / `password`) am FTP-Server an und untersuchen Sie das Home-Verzeichnis dieses Benutzers auf neue Informationen oder höhere Berechtigungen. Versuchen Sie dieselben Zugangsdaten auch für SSH.
Empfehlung (Admin): Setzen Sie Passwortrichtlinien durch, die die Verwendung schwacher oder häufig vorkommender Passwörter verbieten. Schulen Sie Benutzer bezüglich sicherer Passwortpraktiken. Implementieren Sie Mechanismen zur Erkennung und Blockierung von Brute-Force-Angriffen (z.B. fail2ban).
Wir melden uns mit den neu gefundenen Zugangsdaten am FTP-Server an.
Connected to 192.168.2.122.
220 (vsFTPd 3.0.3)
Name (192.168.2.122:cyber): jane
331 Please specify the password.
Password: password
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
Analyse: Wir verbinden uns erneut mit dem FTP-Server, geben diesmal aber `jane` als Benutzernamen und das gefundene Passwort `password` ein. Der `230 Login successful.` bestätigt den Erfolg.
Bewertung: Wir haben nun authentifizierten Zugriff als Benutzer `jane`. Dies eröffnet potenziell Zugang zu Dateien und Verzeichnissen, die dem anonymen Benutzer nicht zugänglich waren.
Empfehlung (Pentester): Erkunden Sie das Dateisystem aus der Sicht von `jane`. Suchen Sie nach privaten Dateien, Konfigurationsdateien, SSH-Schlüsseln oder Hinweisen auf weitere Eskalationsmöglichkeiten.
Empfehlung (Admin): Überprüfen Sie die Berechtigungen und zugänglichen Verzeichnisse für den Benutzer `jane`.
Wir wechseln in das Verzeichnis `backups`.
250 Directory successfully changed.
Analyse: Der Befehl `cd backups` wechselt in ein Unterverzeichnis namens `backups`.
Bewertung: Das Verzeichnis existiert und ist für `jane` zugänglich. Backup-Verzeichnisse sind oft eine Goldgrube für alte Versionen von Dateien, Konfigurationen oder manchmal sogar Zugangsdaten.
Empfehlung (Pentester): Listen Sie den Inhalt des `backups`-Verzeichnisses auf.
Empfehlung (Admin): Stellen Sie sicher, dass Backup-Verzeichnisse angemessen geschützt sind und keine sensiblen Informationen enthalten, die nicht mehr benötigt werden.
Wir listen den Inhalt des `backups`-Verzeichnisses auf.
229 Entering Extended Passive Mode (|||16077|) 150 Here comes the directory listing. -rw-r--r-- 1 1002 1002 59 May 22 2021 keys.txt 226 Directory send OK.
Analyse: Der Befehl `ls` listet den Inhalt des aktuellen Verzeichnisses (`backups`) auf.
Bewertung: Wir finden eine einzelne Datei namens `keys.txt`. Der Name legt nahe, dass sie Schlüssel oder möglicherweise Passwörter enthalten könnte.
Empfehlung (Pentester): Laden Sie die Datei `keys.txt` herunter und analysieren Sie ihren Inhalt.
Empfehlung (Admin): Benennen Sie Dateien nicht auf eine Weise, die ihren potenziell sensiblen Inhalt verrät. Speichern Sie Schlüssel oder Passwörter niemals im Klartext.
Wir listen den Inhalt erneut mit detaillierten Informationen auf.
229 Entering Extended Passive Mode (|||11973|) 150 Here comes the directory listing. drwxr-xr-x 2 1002 1002 4096 May 22 2021 . dr-x------ 3 1002 1002 4096 May 22 2021 .. -rw-r--r-- 1 1002 1002 59 May 22 2021 keys.txt 226 Directory send OK.
Analyse: `ls -la` zeigt detaillierte Informationen an, einschließlich Berechtigungen und Besitzer. Die Datei `keys.txt` gehört dem Benutzer mit UID 1002 und Gruppe 1002 (vermutlich `jane`). Sie hat Lese-/Schreibrechte für den Besitzer und Leserechte für Gruppe und Andere.
Bewertung: Bestätigt die Existenz der Datei und zeigt, dass `jane` (UID 1002) sie lesen kann. Keine weiteren versteckten Dateien vorhanden.
Empfehlung (Pentester): Fahren Sie mit dem Download der Datei fort.
Empfehlung (Admin): Keine zusätzlichen Empfehlungen.
Wir laden die Datei `keys.txt` herunter.
local: keys.txt remote: keys.txt 229 Entering Extended Passive Mode (|||26553|) 150 Opening BINARY mode data connection for keys.txt (59 bytes). 100% |*************************************************************************| 59 4.00 KiB/s 00:00 ETA 226 Transfer complete. 59 bytes received in 00:00 (3.93 KiB/s)
Analyse: Der Befehl `get keys.txt` lädt die Datei vom FTP-Server auf unser lokales System herunter.
Bewertung: Der Download war erfolgreich. Wir haben nun eine lokale Kopie von `keys.txt`.
Empfehlung (Pentester): Analysieren Sie den Inhalt der lokalen `keys.txt`-Datei.
Empfehlung (Admin): Keine spezifische Empfehlung.
Wir zeigen den Inhalt der heruntergeladenen `keys.txt` an.
kJGgh-kiu65-zghku-76zzt-hgf56 llij8-fgzZ-rTzU1-ddfgz-i876S
Analyse: `cat keys.txt` gibt den Inhalt der lokalen Datei aus.
Bewertung: Die Datei enthält zwei Zeichenketten, die wie Lizenzschlüssel oder möglicherweise Passwörter aussehen. Ihr Format ist ungewöhnlich für typische Passwörter, aber sie sollten dennoch getestet werden.
Empfehlung (Pentester): Fügen Sie diese beiden Zeichenketten zur Liste potenzieller Passwörter hinzu. Testen Sie sie gegen die bekannten Benutzernamen (`jane`, `j.miller`, `wpuser` und potenziell andere, die noch gefunden werden) für SSH und andere Dienste.
Empfehlung (Admin): Speichern Sie niemals sensible Schlüssel oder Passwörter im Klartext in Dateien, insbesondere nicht in Backup-Verzeichnissen.
Wir versuchen erneut, eine Datei hochzuladen, diesmal als Benutzer `jane`.
local: index.html remote: index.html 229 Entering Extended Passive Mode (|||33233|) 550 Permission denied.
Analyse: Versuch, eine Datei `index.html` in das `backups`-Verzeichnis hochzuladen.
Bewertung: Auch als `jane` haben wir keine Schreibrechte in diesem Verzeichnis. Das Verzeichnis ist nur lesbar.
Empfehlung (Pentester): Bestätigt die Lese-Einschränkung. Fokus bleibt auf Informationsgewinnung.
Empfehlung (Admin): Korrekte Berechtigungen gesetzt.
Wir versuchen erneut, aus dem Verzeichnisbaum auszubrechen.
550 Failed to change directory.
Analyse: Erneuter Versuch, über das zugewiesene Verzeichnis hinauszunavigieren.
Bewertung: Schlägt erneut fehl. Bestätigt die `chroot`-Umgebung auch für den Benutzer `jane`.
Empfehlung (Pentester): Akzeptieren Sie die `chroot`-Beschränkung.
Empfehlung (Admin): `chroot`-Konfiguration ist wirksam.
Wir laden den gesamten Inhalt des FTP-Servers als Benutzer `jane` herunter, um sicherzustellen, dass wir alle zugänglichen Dateien haben.
Analyse: Ähnlich wie zuvor verwenden wir `wget -r`, diesmal aber mit den Zugangsdaten von `jane` (`jane`:`password`), um alle Dateien herunterzuladen, auf die `jane` Zugriff hat.
Bewertung: Dies stellt sicher, dass wir eine vollständige Kopie aller für `jane` sichtbaren FTP-Daten zur lokalen Analyse haben. Es könnten zusätzliche Dateien oder Verzeichnisse im Stammverzeichnis von `jane` existieren, die wir zuvor nicht gesehen haben.
Empfehlung (Pentester): Vergleichen Sie die neu heruntergeladenen Dateien mit denen aus dem anonymen Download. Untersuchen Sie alle neuen oder geänderten Dateien.
Empfehlung (Admin): Monitoring für rekursive Downloads bleibt relevant.
Wir listen das Stammverzeichnis des FTP-Servers auf (dies scheint eine nachträgliche Überprüfung oder ein Fehler im Log zu sein, da wir zuvor im `backups`-Verzeichnis waren und `wget` bereits ausgeführt wurde. Wir nehmen an, dies geschah *vor* dem `wget`-Befehl oder in einer separaten FTP-Sitzung).
229 Entering Extended Passive Mode (|||48709|) 150 Here comes the directory listing. dr-x------ 3 1002 1002 4096 May 22 2021 jane dr-x------ 3 1001 1001 4096 May 22 2021 jim dr-x------ 4 1000 1000 4096 May 22 2021 john drwx------ 4 1003 1003 4096 May 22 2021 jules 226 Directory send OK.
Analyse: Dieser `ls`-Befehl wird im Wurzelverzeichnis des FTP-Servers (oder dem chroot-Verzeichnis) ausgeführt. Er zeigt vier Verzeichnisse, die nach Benutzern benannt sind: `jane` (UID 1002), `jim` (UID 1001), `john` (UID 1000) und `jules` (UID 1003).
Bewertung: Sehr wichtiger Fund! Wir haben nun drei weitere potenzielle Benutzernamen identifiziert: `jim`, `john` und `jules`. Die Berechtigungen (`dr-x------`) deuten darauf hin, dass jeder Benutzer wahrscheinlich nur auf sein eigenes Verzeichnis zugreifen kann (außer `jules`, das `drwx------` hat, was darauf hindeutet, dass `jane` dort möglicherweise keine Leserechte hat).
Empfehlung (Pentester): Fügen Sie `jim`, `john` und `jules` zur Liste der Benutzernamen hinzu. Führen Sie Brute-Force-Angriffe (FTP und SSH) für diese Benutzer durch. Verwenden Sie die zuvor gefundenen potenziellen Passwörter (`JuZhRbNNk.()`, die beiden aus `keys.txt`) und die `rockyou.txt`.
Empfehlung (Admin): Überprüfen Sie die Notwendigkeit und die Berechtigungen dieser Benutzerkonten und ihrer Home-Verzeichnisse auf dem FTP-Server.
Wir starten einen Brute-Force-Angriff auf den FTP-Dienst für den Benutzer `jim`.
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-05-03 01:24:04
[DATA] max 64 tasks per 1 server, overall 64 tasks, 15344575 login tries (l:1/p:15344575), ~239759 tries per task
[DATA] attacking ftp://lunch.vln:21/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[21][ftp] host: lunch.vln login: jim password: 12345
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Analyse: Identischer Hydra-Befehl wie zuvor, aber diesmal für den Benutzer `jim` (`-l jim`).
Bewertung: Wieder erfolgreich! Hydra findet das Passwort `12345` für den Benutzer `jim`. Ein weiteres extrem schwaches Passwort.
Empfehlung (Pentester): Notieren Sie die Zugangsdaten (`jim` / `12345`). Melden Sie sich als `jim` am FTP an und untersuchen Sie sein Home-Verzeichnis. Testen Sie die Zugangsdaten auch für SSH.
Empfehlung (Admin): Erneut: Passwortrichtlinien durchsetzen, Brute-Force-Schutz implementieren.
Wir melden uns als `jim` am FTP-Server an.
Connected to 192.168.2.122.
220 (vsFTPd 3.0.3)
Name (192.168.2.122:cyber): jim
331 Please specify the password.
Password: 12345
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Analyse: Erfolgreicher FTP-Login mit den Zugangsdaten `jim` / `12345`.
Bewertung: Wir haben nun auch Zugriff als Benutzer `jim`. Es ist wahrscheinlich, dass sein Home-Verzeichnis andere Informationen enthält als das von `jane`.
Empfehlung (Pentester): Untersuchen Sie das FTP-Verzeichnis von `jim`.
Empfehlung (Admin): Keine neuen Empfehlungen.
Wir starten einen Brute-Force-Angriff auf den FTP-Dienst für den Benutzer `jules`.
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-05-03 01:28:43
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 15344575 login tries (l:1/p:15344575), ~239759 tries per task
[DATA] attacking ftp://lunch.vln:21/
[STATUS] 801.00 tries/min, 801 tries in 00:01h, 15343794 to do in 319:16h, 44 active
[STATUS] 794.00 tries/min, 2382 tries in 00:03h, 15342213 to do in 322:03h, 44 active
[STATUS] 786.86 tries/min, 5508 tries in 00:07h, 15339087 to do in 324:55h, 44 active
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[21][ftp] host: lunch.vln login: jules password: sexylady
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Analyse: Hydra-Angriff für den Benutzer `jules` (`-l jules`) mit der `rockyou.txt`.
Bewertung: Wieder erfolgreich! Das Passwort für `jules` ist `sexylady`. Ein weiteres schwaches Passwort.
Empfehlung (Pentester): Notieren Sie `jules` / `sexylady`. Melden Sie sich als `jules` via FTP an und untersuchen Sie das Verzeichnis. Testen Sie die Zugangsdaten für SSH.
Empfehlung (Admin): Gleiche Empfehlungen wie bei `jane` und `jim` bezüglich Passwortsicherheit und Brute-Force-Schutz.
Nun scheinen wir uns im Home-Verzeichnis des Benutzers `jules` (oder einer lokalen Kopie davon) zu befinden und erstellen eine neue Passwortliste. Wir leiten den Inhalt einer versteckten Datei `.good-passwd` in eine neue Datei `newpass.txt` um.
Analyse: Der Befehl `cat .good-passwd >> newpass.txt` liest den Inhalt der Datei `.good-passwd` und hängt (`>>`) ihn an die Datei `newpass.txt` an (oder erstellt `newpass.txt`, falls sie nicht existiert). Der Prompt `~/jj/192.168.2.122/.backups` deutet darauf hin, dass wir uns in einer lokalen Verzeichnisstruktur befinden, die möglicherweise aus dem FTP-Download von `jules` stammt (der Ordner `.backups` wurde bei `jane` gefunden, vielleicht gibt es ihn bei `jules` auch oder die Pfadangabe ist irreführend).
Bewertung: Wir beginnen, eine benutzerdefinierte Passwortliste (`newpass.txt`) zu erstellen, basierend auf Dateien, die wir auf dem Zielsystem gefunden haben. Dies ist eine gängige Technik, wenn Standardlisten wie `rockyou.txt` nicht zum Erfolg führen oder wenn man gezieltere Angriffe starten möchte. Der Dateiname `.good-passwd` lässt vermuten, dass hier potenziell stärkere oder relevantere Passwörter enthalten sind.
Empfehlung (Pentester): Suchen Sie nach weiteren Dateien, die Passwörter enthalten könnten (z.B. `.bad-passwds`, `.forbidden-passwds`, wie im nächsten Schritt angedeutet) und fügen Sie deren Inhalt ebenfalls zur `newpass.txt` hinzu. Verwenden Sie diese kombinierte Liste dann für weitere Brute-Force-Angriffe, insbesondere gegen den verbleibenden Benutzer `john` und den SSH-Dienst.
Empfehlung (Admin): Speichern Sie niemals Passwortlisten, auch keine "guten" oder "schlechten", auf dem System, insbesondere nicht in zugänglichen Verzeichnissen.
Wir listen den Inhalt des aktuellen Verzeichnisses, um die gefundenen Passwortdateien zu sehen.
insgesamt 136660 drwxr-xr-x 2 root root 4096 3. Mai 01:41 . drwxr-xr-x 4 root root 4096 3. Mai 01:40 .. -rw-r--r-- 1 root root 139921517 22. Mai 2021 .bad-passwds -rw-r--r-- 1 root root 0 22. Mai 2021 .forbidden-passwds -rw-r--r-- 1 root root 562 22. Mai 2021 .good-passwd -rw-r--r-- 1 root root 562 3. Mai 01:41 newpass.txt -rw-r--r-- 1 root root 0 22. Mai 2021 .very-bad-passwds
Analyse: `ls -la` zeigt den Inhalt des Verzeichnisses. Wir sehen mehrere Dateien, die nach Passwortlisten klingen: `.bad-passwds` (sehr groß, ~140MB), `.forbidden-passwds` (leer), `.good-passwd` und `.very-bad-passwds` (leer). Unsere Zieldatei `newpass.txt` enthält bisher nur den Inhalt von `.good-passwd`.
Bewertung: Das Vorhandensein dieser Dateien ist ein schwerwiegender Fund. Insbesondere die große Datei `.bad-passwds` enthält wahrscheinlich eine umfangreiche Passwortliste. Die leeren Dateien sind weniger nützlich.
Empfehlung (Pentester): Fügen Sie den Inhalt von `.bad-passwds` ebenfalls zur `newpass.txt` hinzu, um eine umfassende, zielspezifische Passwortliste zu erhalten.
Empfehlung (Admin): Löschen Sie diese Passwortlistendateien umgehend vom System. Untersuchen Sie, wie diese Dateien dorthin gelangt sind.
Wir fügen nun den Inhalt von `.bad-passwds` zu unserer `newpass.txt` hinzu.
Analyse: Der Inhalt von `.bad-passwds` wird an die `newpass.txt` angehängt.
Bewertung: `newpass.txt` enthält nun die kombinierten Passwörter aus `.good-passwd` und `.bad-passwds`. Dies ist unsere maßgeschneiderte Wortliste für den nächsten Angriff.
Empfehlung (Pentester): Verwenden Sie `newpass.txt` für einen Brute-Force-Angriff auf den Benutzer `john`, vorzugsweise gegen den SSH-Dienst, da dieser oft robuster ist und einen Shell-Zugang ermöglicht.
Empfehlung (Admin): Keine neuen Empfehlungen.
Wir überprüfen den Pfad zur erstellten Passwortliste.
/root/jj/192.168.2.122/.backups
Analyse: `pwd` (print working directory) zeigt das aktuelle Verzeichnis an.
Bewertung: Bestätigt den Speicherort der `newpass.txt` für den nächsten Befehl.
Empfehlung (Pentester): Stellen Sie sicher, dass der Pfad im nächsten Hydra-Befehl korrekt ist.
Empfehlung (Admin): Keine spezifische Empfehlung.
Wir starten den Brute-Force-Angriff gegen den SSH-Dienst (Port 22) für den Benutzer `john` unter Verwendung unserer erstellten Passwortliste `newpass.txt`.
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-05-03 01:42:32
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344447 login tries (l:1/p:14344447), ~224132 tries per task
[DATA] attacking ssh://lunch.vln:22/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[22][ssh] host: lunch.vln login: john password: zhnmju!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 of 1 target successfully completed, 1 valid password found
Analyse: Hydra wird nun gegen den SSH-Dienst (`ssh://lunch.vln:22`) für den Benutzer `john` (`-l john`) mit der benutzerdefinierten Passwortliste (`-P /root/jj/.../newpass.txt`) ausgeführt. Hydra gibt eine Warnung aus, dass viele SSH-Server die Anzahl paralleler Verbindungen begrenzen und empfiehlt, `-t 4` zu verwenden, aber der Angriff wird mit `-t 64` fortgesetzt.
Bewertung: Erfolg! Hydra findet das Passwort `zhnmju!!!` für den Benutzer `john` auf dem SSH-Dienst. Dies ist ein deutlich stärkeres Passwort als die vorherigen, was darauf hindeutet, dass es wahrscheinlich aus einer der gefundenen Passwortdateien stammt. Der Zugriff über SSH gibt uns eine interaktive Shell auf dem Zielsystem.
Empfehlung (Pentester): Melden Sie sich sofort mit `ssh john@lunch.vln` und dem gefundenen Passwort an. Dies ist der erreichte "Initial Access" zur Shell. Beginnen Sie mit der Enumeration des Systems aus der Sicht des Benutzers `john`, um nach Wegen zur Privilegienerweiterung (Privilege Escalation) zu suchen.
Empfehlung (Admin): Überprüfen Sie dringend die Herkunft der Passwortlisten und entfernen Sie diese. Ändern Sie das Passwort für den Benutzer `john` und alle anderen potenziell kompromittierten Konten. Implementieren Sie strenge Passwortrichtlinien und Multi-Faktor-Authentifizierung für SSH. Verwenden Sie Tools wie `fail2ban`, um SSH-Brute-Force-Angriffe zu blockieren.
Wir melden uns mit den gefundenen Zugangsdaten per SSH an.
john@lunch.vln's password: zhnmju!!!
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-73-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Tue 02 May 2023 11:43:46 PM UTC
System load: 0.08
Usage of /: 86.3% of 4.37GB
Memory usage: 25%
Swap usage: 0%
Processes: 168
Users logged in: 0
IPv4 address for enp0s3: 192.168.2.122
IPv6 address for enp0s3: 2003:d4:c729:2a22:a00:27ff:fe2c:853f
=> / is using 86.3% of 4.37GB
64 updates can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '22.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Sat May 22 16:03:57 2021 from 192.168.178.143
john@funbox8:~$
Analyse: Der Befehl `ssh john@lunch.vln` stellt eine SSH-Verbindung zum Zielhost `lunch.vln` als Benutzer `john` her. Nach Eingabe des korrekten Passworts (`zhnmju!!!`) wird die Verbindung hergestellt, und wir sehen die Willkommensnachricht (Message of the Day - MOTD) des Ubuntu-Systems. Der Prompt ändert sich zu `john@funbox8:~$`, was anzeigt, dass wir erfolgreich eine Shell als Benutzer `john` auf dem Zielsystem `funbox8` haben.
Bewertung: Initial Access erfolgreich erlangt! Wir haben eine interaktive Shell auf dem Zielsystem. Die MOTD liefert zusätzliche Informationen über das System (Ubuntu 20.04.2 LTS, Kernel 5.4.0, Ressourcennutzung, verfügbare Updates). Der Hinweis auf verfügbare Updates und ein Release-Upgrade ist ebenfalls notierenswert.
Empfehlung (Pentester): Beginnen Sie mit der lokalen Enumeration: Überprüfen Sie Benutzerrechte (`id`, `sudo -l`), suchen Sie nach interessanten Dateien im Home-Verzeichnis (`ls -la ~`), prüfen Sie laufende Prozesse, Netzwerkverbindungen und installierte Software. Suchen Sie nach SUID/SGID-Binaries und schlecht konfigurierten Cron-Jobs als potenzielle Vektoren für Privilege Escalation.
Empfehlung (Admin): Stellen Sie sicher, dass die MOTD keine unnötig detaillierten Informationen preisgibt. Halten Sie das System aktuell, indem Sie die empfohlenen Updates und Upgrades durchführen.
Dieser Abschnitt demonstriert, wie die vorherigen Funde und der erlangte initiale Zugriff genutzt werden können, um Root-Rechte auf dem System zu erlangen. Der primäre Vektor hier ist die Wiederverwendung von Passwörtern.
Kurzbeschreibung: Während der Enumeration nach dem Initial Access als Benutzer `john` wurden Hinweise auf ein möglicherweise wiederverwendetes Passwort gefunden. Wir werden versuchen, mit dem Passwort des Benutzers `john` zum `root`-Benutzer zu wechseln.
Voraussetzungen: Erfolgreicher SSH-Login als Benutzer `john` mit dem Passwort `zhnmju!!!`.
Schritt 1: Überprüfung der sudo-Rechte
Zuerst prüfen wir, ob der Benutzer `john` über `sudo`-Berechtigungen verfügt, die eine direkte Privilegienerweiterung ermöglichen würden.
[sudo] password for john: zhnmju!!!
Sorry, user john may not run sudo on funbox8.
Analyse: Der Befehl `sudo -l` listet die Befehle auf, die der aktuelle Benutzer mit `sudo` (also mit Root-Rechten) ausführen darf. Es wird das Passwort des Benutzers `john` abgefragt.
Bewertung: Die Ausgabe `Sorry, user john may not run sudo on funbox8.` zeigt klar, dass `john` keine `sudo`-Rechte hat. Dieser direkte Weg zur Privilegienerweiterung ist also versperrt.
Empfehlung (Pentester): Notieren, dass `sudo` kein Vektor ist. Suche nach anderen Wegen wie SUID-Binaries, Kernel-Exploits oder Fehlkonfigurationen.
Empfehlung (Admin): Korrekt konfiguriert, da normale Benutzer keine `sudo`-Rechte haben sollten, es sei denn, sie sind explizit erforderlich.
Schritt 2: Suche nach Hinweisen im Home-Verzeichnis
Wir untersuchen das Home-Verzeichnis von `john` auf interessante Dateien.
total 12 drwx------ 2 john john 4096 May 22 2021 . dr-x------ 4 john john 4096 May 22 2021 .. -rwx------ 1 john john 131 May 22 2021 todo.list
Analyse: Im Home-Verzeichnis von `john` gibt es ein Unterverzeichnis `.todo`. Mit `ls -la` listen wir dessen Inhalt auf und finden eine ausführbare Datei `todo.list`.
Bewertung: Der Verzeichnisname und die Datei deuten auf Notizen hin. Der Dateiname `.todo` ist ungewöhnlich für ein Verzeichnis.
Empfehlung (Pentester): Untersuchen Sie den Inhalt der Datei `todo.list`.
Empfehlung (Admin): Keine spezifische Empfehlung.
1. Install LAMP 2. Install MAIL-System 3. Install Firewall 4. Install Plesk 5. Chance R00TPASSWD, because it's the same right now.
Analyse: Wir geben den Inhalt der `todo.list`-Datei aus.
Bewertung: Kritischer Fund! Punkt 5 enthält die Information "Chance R00TPASSWD, because it's the same right now." Dies ist ein sehr starker Hinweis darauf, dass das Root-Passwort aktuell identisch mit dem Passwort eines anderen Benutzers ist – höchstwahrscheinlich das von `john`, da wir uns in seinem Verzeichnis befinden.
Empfehlung (Pentester): Versuchen Sie sofort, mit dem Befehl `su root` und dem Passwort von `john` (`zhnmju!!!`) zum Root-Benutzer zu wechseln.
Empfehlung (Admin): Speichern Sie niemals Hinweise auf Passwörter oder Informationen über Passwort-Wiederverwendung in Klartextdateien. Verwenden Sie niemals dasselbe Passwort für verschiedene Benutzerkonten, insbesondere nicht für das Root-Konto.
Schritt 3: Erster Versuch, zu Root zu wechseln (Fehlgeschlagen)
Basierend auf dem Hinweis versuchen wir, zum Root-Benutzer zu wechseln.
Password: su: Authentication failure
Analyse: Der Befehl `su root` versucht, zur Shell des `root`-Benutzers zu wechseln. Es wird nach dem Root-Passwort gefragt. Hier wurde vermutlich ein falsches Passwort (oder das von `john` zum ersten Mal, was laut Hinweis aber funktionieren sollte - vielleicht ein Tippfehler?) eingegeben.
Bewertung: Der Versuch ist fehlgeschlagen (`Authentication failure`). Dies widerspricht dem Hinweis aus der `todo.list` oder das eingegebene Passwort war falsch. Es ist wichtig, den Hinweis nicht sofort zu verwerfen.
Empfehlung (Pentester): Stellen Sie sicher, dass das Passwort von `john` (`zhnmju!!!`) korrekt eingegeben wird. Versuchen Sie es erneut. Führen Sie weitere Enumeration durch, falls der zweite Versuch auch fehlschlägt.
Empfehlung (Admin): Keine neuen Empfehlungen.
Schritt 4: Weitere Enumeration (SUID-Dateien)
Da der erste `su`-Versuch fehlschlug (oder als Teil der Standard-Enumeration), suchen wir nach SUID-Binaries, die möglicherweise für Privilegienerweiterung missbraucht werden können.
816 84 -rwsr-xr-x 1 root root 85064 Nov 29 11:53 /snap/core20/1852/usr/bin/chfn 822 52 -rwsr-xr-x 1 root root 53040 Nov 29 11:53 /snap/core20/1852/usr/bin/chsh 891 87 -rwsr-xr-x 1 root root 88464 Nov 29 11:53 /snap/core20/1852/usr/bin/gpasswd 975 55 -rwsr-xr-x 1 root root 55528 Feb 7 2022 /snap/core20/1852/usr/bin/mount 984 44 -rwsr-xr-x 1 root root 44784 Nov 29 11:53 /snap/core20/1852/usr/bin/newgrp 999 67 -rwsr-xr-x 1 root root 68208 Nov 29 11:53 /snap/core20/1852/usr/bin/passwd 1109 67 -rwsr-xr-x 1 root root 67816 Feb 7 2022 /snap/core20/1852/usr/bin/su 1110 163 -rwsr-xr-x 1 root root 166056 Jan 16 13:06 /snap/core20/1852/usr/bin/sudo 1168 39 -rwsr-xr-x 1 root root 39144 Feb 7 2022 /snap/core20/1852/usr/bin/umount 131570 56 -rwsr-sr-x 1 daemon daemon 55560 Nov 12 2018 /usr/bin/at 132243 40 -rwsr-xr-x 1 root root 39144 Jul 21 2020 /usr/bin/umount 131644 52 -rwsr-xr-x 1 root root 53040 May 28 2020 /usr/bin/chsh 131638 84 -rwsr-xr-x 1 root root 85064 May 28 2020 /usr/bin/chfn 132174 164 -rwsr-xr-x 1 root root 166056 Jan 19 2021 /usr/bin/sudo 132173 68 -rwsr-xr-x 1 root root 67816 Jul 21 2020 /usr/bin/su 131948 68 -rwsr-xr-x 1 root root 68208 May 28 2020 /usr/bin/passwd 131767 88 -rwsr-xr-x 1 root root 88464 May 28 2020 /usr/bin/gpasswd 131901 56 -rwsr-xr-x 1 root root 55528 Jul 21 2020 /usr/bin/mount 131969 32 -rwsr-xr-x 1 root root 31032 Aug 16 2019 /usr/bin/pkexec 131915 44 -rwsr-xr-x 1 root root 44784 May 28 2020 /usr/bin/newgrp 131749 40 -rwsr-xr-x 1 root root 39144 Mar 7 2020 /usr/bin/fusermount 131469 128 -rwsr-xr-x 1 root root 130152 Feb 2 2021 /usr/lib/snapd/snap-confine 132450 52 -rwsr-xr-- 1 root messagebus 51344 Jun 11 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 132457 16 -rwsr-xr-x 1 root root 14488 Jul 8 2019 /usr/lib/eject/dmcrypt-get-device 132672 24 -rwsr-xr-x 1 root root 22840 Aug 16 2019 /usr/lib/policykit-1/polkit-agent-helper-1 151983 464 -rwsr-xr-x 1 root root 473576 Mar 9 2021 /usr/lib/openssh/ssh-keysign
Analyse: Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht im gesamten Dateisystem (`/`) nach Dateien (`-type f`), die das SUID-Bit gesetzt haben (`-perm -4000`). Das SUID-Bit erlaubt es einem Benutzer, eine Datei mit den Rechten des Dateibesitzers (oft `root`) auszuführen. `-ls` zeigt detaillierte Informationen an, und `2>/dev/null` unterdrückt Fehlermeldungen (z.B. bei fehlenden Leserechten).
Bewertung: Die Liste zeigt viele Standard-SUID-Binaries unter Linux (`chfn`, `chsh`, `passwd`, `su`, `sudo`, `mount`, `umount`, etc.) sowie einige unter `/snap` (die oft stärker eingeschränkt sind). Auf den ersten Blick sind keine ungewöhnlichen oder bekanntermaßen leicht ausnutzbaren SUID-Dateien zu sehen. Die Standard-Tools wie `su` und `sudo` erfordern immer noch das korrekte Passwort.
Empfehlung (Pentester): Überprüfen Sie die gefundenen SUID-Binaries auf bekannte Exploits für die spezifischen Versionen (falls ermittelbar). Suchen Sie auf Plattformen wie GTFOBins nach bekannten Methoden, wie diese Binaries zur Privilegienerweiterung missbraucht werden könnten (oft erfordert dies spezifische Konfigurationen oder zusätzliche Schwachstellen).
Empfehlung (Admin): Minimieren Sie die Anzahl der SUID-Binaries auf dem System. Entfernen Sie das SUID-Bit von Dateien, bei denen es nicht zwingend benötigt wird. Halten Sie das System aktuell, um bekannte SUID-Exploits zu patchen.
Schritt 5: Weitere Enumeration (dmesg)
Wir überprüfen die Kernel-Meldungen, manchmal enthalten sie sensible Informationen.
[ 0.452502] ima: No TPM chip found, activating TPM-bypass! [ 0.571399] x86/mm: Checked W+X mappings: passed, no W+X pages found. [ 0.706917] [drm] Cursor bypass. [ 0.707028] [drm] Cursor bypass 2. ... ... ..
Analyse: `dmesg` gibt den Kernel-Ringpuffer aus, der System- und Hardwaremeldungen enthält. Wir filtern (`| grep pass`) nach Zeilen, die "pass" enthalten, in der Hoffnung, auf Reste von Passwörtern oder Authentifizierungsfehlern zu stoßen.
Bewertung: In diesem Fall liefert die Ausgabe keine relevanten Informationen zum Thema Passwörter. Die gefundenen Zeilen beziehen sich auf andere Systemprozesse (TPM-bypass, Speichermappings, Grafiktreiber).
Empfehlung (Pentester): `dmesg` kann dennoch nützlich sein, um Informationen über Hardware, Kernel-Fehler oder manchmal auch fehlgeschlagene Mount-Versuche zu finden. Es lohnt sich oft, die Ausgabe auch ohne `grep` zu überfliegen.
Empfehlung (Admin): Stellen Sie sicher, dass sensible Informationen nicht in Kernel-Meldungen protokolliert werden (dies ist normalerweise der Fall, aber benutzerdefinierte Treiber oder Module könnten problematisch sein).
Schritt 6: Weitere Enumeration (Home-Verzeichnisse)
Wir versuchen, die Home-Verzeichnisse anderer Benutzer einzusehen.
ls: cannot open directory 'jane': Permission denied ls: cannot open directory 'jim': Permission denied john: total 28 dr-x------ 4 john john 4096 May 22 2021 . drwxr-xr-x 6 root root 4096 May 22 2021 .. -rw-r--r-- 1 john john 220 Feb 25 2020 .bash_logout -rw-r--r-- 1 john john 3771 Feb 25 2020 .bashrc drwx------ 2 john john 4096 May 22 2021 .cache -rw-r--r-- 1 john john 807 Feb 25 2020 .profile drwx------ 2 john john 4096 May 22 2021 .todo ls: cannot open directory 'jules': Permission denied
Analyse: Von `/home` aus versuchen wir, den Inhalt aller Unterverzeichnisse (die Home-Verzeichnisse der Benutzer) aufzulisten (`ls -la *`).
Bewertung: Wie erwartet, hat `john` keine Leseberechtigung für die Home-Verzeichnisse von `jane`, `jim` und `jules` (`Permission denied`). Wir sehen nur den Inhalt von `john`s eigenem Home-Verzeichnis, das wir bereits teilweise untersucht haben. Die Berechtigungen sind korrekt gesetzt.
Empfehlung (Pentester): Bestätigt, dass keine Informationen aus anderen Home-Verzeichnissen direkt zugänglich sind. Der Fokus muss auf Wegen liegen, die Rechte zu erhöhen.
Empfehlung (Admin): Korrekte Berechtigungen für Home-Verzeichnisse (typischerweise 700 oder 750) sind wichtig für die Benutzertrennung.
Schritt 7: Erneuter Versuch, zu Root zu wechseln (Erfolgreich - POC)
Basierend auf dem starken Hinweis aus der `todo.list` versuchen wir es erneut, diesmal mit sorgfältiger Eingabe des Passworts von `john`.
Password: zhnmju!!!
Analyse: Wir führen erneut `su root` aus und geben diesmal explizit das Passwort von `john` (`zhnmju!!!`) ein.
Bewertung: Der Befehl erzeugt keine Fehlermeldung mehr. Der nächste Prompt wird erwartet, um den Erfolg zu bestätigen.
Empfehlung (Pentester): Prüfen Sie den nächsten Prompt. Wenn er `#` enthält und der Benutzer `root` ist, war die Privilegienerweiterung erfolgreich.
Empfehlung (Admin): Dringend das Root-Passwort ändern und sicherstellen, dass es einzigartig ist.
Schritt 8: Bestätigung des Root-Zugriffs
Analyse: Der Shell-Prompt hat sich zu `root@funbox8:/home#` geändert. Das `#`-Symbol am Ende und der Benutzername `root` bestätigen, dass wir nun als Root-Benutzer angemeldet sind.
Bewertung: Fantastisch, der Root-Zugriff war erfolgreich! Der Hinweis in der `todo.list` war korrekt – das Root-Passwort war identisch mit dem von `john`. Dies stellt eine kritische Sicherheitslücke dar (Passwort-Wiederverwendung).
Empfehlung (Pentester): Das Ziel ist erreicht. Sichern Sie den Zugriff (z.B. durch Hinzufügen eines SSH-Schlüssels für Root, falls erlaubt und gewünscht). Sammeln Sie die finalen Flags (root.txt, user.txt). Dokumentieren Sie den Pfad zur Kompromittierung.
Empfehlung (Admin): Ändern Sie sofort das Root-Passwort zu einem starken, einzigartigen Passwort. Überprüfen Sie alle Benutzerkonten auf schwache oder wiederverwendete Passwörter. Implementieren Sie Richtlinien gegen Passwort-Wiederverwendung.
Schritt 9: Zugriff auf Root-Flag
Als Root wechseln wir in das Home-Verzeichnis und lesen die Root-Flagge.
|~~ | | | | | |--| ||/~\|~~\/~\\/o | | ||/~\ /~~|/~\ |~~\|/~\/~//~~||_//~/|/~\ | \_/|| ||__/\_//\o |__\_/|| |\__| ||__/| \/_\__|| \\/_| created by @0815R2d2. Congrats ! I look forward to see this on my twitter-account :-)
Analyse: `cd ~` wechselt in das Home-Verzeichnis des aktuellen Benutzers (jetzt `/root`). `cat root.flag` gibt den Inhalt der Datei `root.flag` aus.
Bewertung: Die Datei enthält ASCII-Art und eine Glückwunschbotschaft. Dies ist typisch für CTF-Maschinen. Der eigentliche Flag-Wert scheint hier nicht direkt enthalten zu sein, sondern wird später separat abgefragt.
Empfehlung (Pentester): Suchen Sie nach den Standard-Flag-Dateien (`root.txt`, `user.txt`).
Empfehlung (Admin): Keine spezifische Empfehlung.
Risikobewertung: Die Schwachstelle (Passwort-Wiederverwendung für Root) ist kritisch. Sie ermöglichte einem Angreifer mit initialem Zugriff als normaler Benutzer die vollständige Übernahme des Systems mit maximalen Rechten.
Empfehlungen (Zusammenfassung):